<?php

/**
 * Класс генерации данных
 * @author Michael Naumov <vommuan@gmail.com>
 */

class generate {
	
	/**
	 * Перекодировка строки в utf-8 из русского в транслит
	 * @param string $str - строка, которую нужно перекодировать
	 * @param string $from - шаблон из чего переделывать
	 * @param string $to - шаблон во что переделывать
	 * @return string
	 */
	private function strtr_utf8($str, $from, $to) {
		$keys = array();
		$values = array();
		
		preg_match_all('/./u', $from, $keys);
		preg_match_all('/./u', $to, $values);
		$mapping = array_combine($keys[0], $values[0]);
		
		return strtr($str, $mapping);
    }
	
	/**
	 * Функция превода текста с кириллицы в транслит
	 */
	private function encode_string($st) {
		// Сначала заменяем "односимвольные" фонемы.
	    $st = $this->strtr_utf8($st,"абвгдеёзийклмнопрстуфхъыэ_",
		"abvgdeeziyklmnoprstufh'yei");
		$st = $this->strtr_utf8($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ_",
		"abvgdeeziyklmnoprstufh'yei");
		// Затем - "многосимвольные".
		$tmp = array(
		    "ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh", 
		    "щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya",
		    "Ж"=>"zh", "Ц"=>"ts", "Ч"=>"ch", "Ш"=>"sh", 
		    "Щ"=>"shch","Ь"=>"", "Ю"=>"yu", "Я"=>"ya",
		    "ї"=>"i", "Ї"=>"yi", "є"=>"ie", "Є"=>"ye"
		    );
		$keys = array();
		$values = array();
		$str1='';
		foreach ($tmp as $from => $to) {
			$str1 .= $from;
			$values[] = $to;
		}
		preg_match_all('/./u', $str1, $keys);
		$mapping = array_combine($keys[0], $values);
		$st = strtr($st, $mapping);
		// Возвращаем результат.
		return $st;
	}
	
	/**
	 * Функция для генерации случайного пароля
	 * @return string
	 */
	function generate_password() {
	    $arr = array('a','b','c','d','e','f',
	                 'g','h','i','j','k',
	                 'm','n','p','q','r','s',
	                 't','u','v','w','x','y','z',
	                 '2','3','4','5','6',
	                 '7','8','9');
	    // Генерируем пароль
	    $pass = "";
	    for($i = 0; $i < 8; $i++) {
	      // Вычисляем случайный индекс массива
	      $index = rand(0, count($arr) - 1);
	      $pass .= $arr[$index];
	    }
	    return $pass;
	}
	
	/**
	 * Генерация логина по фамилии и имени пользователя
	 * @param string $surname - фамилия
	 * @param string $name - имя
	 * @return string - логин
	 */
	function generate_login($lastname, $name) {
	    return $this->encode_string($name[0] . $name[1] . $lastname);
	}
}

?>
